package com.feth.play.module.pa.user;
import java.io.Serializable;
import java.util.Locale;
import org.apache.commons.lang3.LocaleUtils;
public abstract class AuthUser implements AuthUserIdentity, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final long NO_EXPIRATION = -1L;
public long expires() {
return NO_EXPIRATION;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result
+ ((getProvider() == null) ? 0 : getProvider().hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final AuthUserIdentity other = (AuthUserIdentity) obj;
if (getId() == null) {
if (other.getId() != null)
return false;
} else if (!getId().equals(other.getId()))
return false;
if (getProvider() == null) {
if (other.getProvider() != null)
return false;
} else if (!getProvider().equals(other.getProvider()))
return false;
return true;
}
@Override
public String toString() {
return getId() + "@" + getProvider();
}
public static Locale getLocaleFromString(final String locale) {
if (locale != null && !locale.isEmpty()) {
try {
return LocaleUtils.toLocale(locale);
} catch (final java.lang.IllegalArgumentException iae) {
try {
return LocaleUtils.toLocale(locale.replace('-', '_'));
} catch (final java.lang.IllegalArgumentException iae2) {
return null;
}
}
} else {
return null;
}
}
public static <T extends AuthUserIdentity & NameIdentity> String toString(final T identity) {
final StringBuilder sb = new StringBuilder();
if (identity.getName() != null) {
sb.append(identity.getName());
sb.append(" ");
}
if(identity instanceof EmailIdentity) {
final EmailIdentity i2 = (EmailIdentity) identity;
if (i2.getEmail() != null) {
sb.append("(");
sb.append(i2.getEmail());
sb.append(") ");
}
}
if (sb.length() == 0) {
sb.append(identity.getId());
}
sb.append(" @ ");
sb.append(identity.getProvider());
return sb.toString();
}
}